package com.william.jdbcplus.core.conditions.criterion;

import java.io.Serializable;

/**
 * From 片段
 *
 * @author niliwei
 */
public interface From<Wrap, R, R2> extends Serializable {
    /**
     * 查询表 from table
     *
     * @param
     * @return
     */
    Wrap from(Class<?> clazz);

    /**
     * 查询表 from table
     *
     * @param
     * @return
     */
    Wrap from(String table);

    /**
     * 内连接
     *
     * @param table 表
     * @param r1    左列
     * @param r2    右列
     * @return
     */
    Wrap join(String table, R r1, R2 r2);

    /**
     * 内连接
     *
     * @param table 表
     * @param r1    左列
     * @param r2    右列
     * @return
     */
    Wrap innerJoin(String table, R r1, R2 r2);

    /**
     * 左连接
     *
     * @param table 表
     * @param r1    左列
     * @param r2    右列
     * @return
     */
    Wrap leftJoin(String table, R r1, R2 r2);

    /**
     * 右连接
     *
     * @param table 表
     * @param r1    左列
     * @param r2    右列
     * @return
     */
    Wrap rightJoin(String table, R r1, R2 r2);

//    /**
//     * 全连接，删除因为 mysql 不支持 full join
//     *
//     * @param table 表
//     * @param r1    左列
//     * @param r2    右列
//     * @return
//     */
//    Wrap fullJoin(String table, R r1, R2 r2);

}
